M.2 SSD 硬盘

Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.


M.2 SSD 使用 PCIe 通道接入,本文说明 NVMe SSD 在 Linux 系统中的硬件安装、分区、格式化、挂载和读写测试流程。示例设备名以 /dev/nvme0n1 为例,分区为 /dev/nvme0n1p1

硬件接口

M.2 NVMe SSD 通过 PCIe 接口连接到单板计算机。安装前请先关机断电,确认转接线、GPIO 转接头、尼龙柱和螺钉齐全;如果同一 PCIe/M.2 位置已安装其他 PCIe 设备,请先拆下后再安装 SSD。

../../../_images/image_HbtebdZJToRUm2xc5PXcpACvnFh.webp

快速安装指南

  1. 将 PCIe 转接线均匀插入单板计算机的 PCIe 接口,再从两侧向下按压固定支架,确保转接线牢固固定。

  2. 将 M.2 HAT+ 插入到M2设备 40PIN插口。

  3. 插入 M.2 NVMe SSD,确认 SSD 与 HAT 不松动后再上电。

【安装完成正视图】

../../../_images/image_QgOpbd3k9o1PLex4FOZcJDK7n6d.webp

【安装完成背面图】

../../../_images/image_UVYjbWi4ToW62ExSZQscafCGnWb.webp

【安装完成侧视图】

../../../_images/image_DsUtbS1G8oNQjyxBOO9cyTkQn1e.webp

【M.2 HAT+ 固定完成示意图】

../../../_images/image_WGqRbM7SCofgpAxL6q9cSTl8nRc.webp

💡 分区、格式化和裸盘写入都会破坏 SSD 原有数据。若 SSD 不是空盘,请先备份数据;不确定时只执行设备识别和只读检查。

软件功能使用

确认 NVMe 设备

系统启动后,先确认 PCIe 设备和 NVMe 块设备是否被识别。正常情况下会生成 /dev/nvme0/dev/nvme0n1;如果 SSD 已有分区,还会生成 /dev/nvme0n1p1 等分区节点。

lspci -nn
00:00.0 PCI bridge [0604]: Rockchip Electronics Co., Ltd RK3576 [1d87:3576] (rev 01)
01:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd NVMe SSD Controller 980 (DRAM-less) [144d:a809]
ls -l /dev/nvme*
crw------- 1 root root 238, 0 Sep  3 09:48 /dev/nvme0
brw-rw---- 1 root disk 259, 0 Sep  3 09:48 /dev/nvme0n1
brw-rw---- 1 root disk 259, 1 Sep  3 09:48 /dev/nvme0n1p1
lsblk -o NAME,MAJ:MIN,RM,SIZE,RO,TYPE,MOUNTPOINT,FSTYPE,MODEL /dev/nvme0n1
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT FSTYPE MODEL
nvme0n1     259:0    0 238.5G  0 disk                   SAMSUNG MZ9LQ256HBJD-00B
└─nvme0n1p1 259:1    0 238.5G  0 part            ext4
fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1: 238.47 GiB, 256060514304 bytes, 500118192 sectors
Disk model: SAMSUNG MZ9LQ256HBJD-00BVL
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 16384 bytes / 131072 bytes
Disklabel type: gpt
Disk identifier: 49D7C880-46CB-4694-AE9C-DBC36EEC5709

Device         Start       End   Sectors   Size Type
/dev/nvme0n1p1  2048 500117503 500115456 238.5G Linux filesystem

分区操作(fdisk)

新盘或已清空的 SSD 可能只有整盘节点 /dev/nvme0n1,需要先创建分区表和分区。执行以下命令进入 fdisk 交互界面:

fdisk /dev/nvme0n1

fdisk 交互界面中依次输入:

g      # 创建 GPT 分区表
n      # 新建分区,分区号、起始扇区和结束扇区均可保持默认
w      # 写入分区表并退出

操作完成后,系统会生成第一个分区 /dev/nvme0n1p1。如分区节点未立即出现,可执行 partprobe 后再次检查。

partprobe /dev/nvme0n1
ls -l /dev/nvme0n1p1
lsblk /dev/nvme0n1

格式化分区(EXT4 格式)

使用 mkfs.ext4 将新分区格式化为 EXT4 文件系统:

mkfs.ext4 /dev/nvme0n1p1

手动挂载分区

创建挂载目录,并将分区挂载到 /mnt/myssd

mkdir -p /mnt/myssd
mount /dev/nvme0n1p1 /mnt/myssd
findmnt /mnt/myssd
TARGET     SOURCE         FSTYPE OPTIONS
/mnt/myssd /dev/nvme0n1p1 ext4   rw,relatime,stripe=32

df -h /mnt/myssd
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p1  234G  2.1M  222G   1% /mnt/myssd

df -h 输出中包含 /dev/nvme0n1p1/mnt/myssd,表示挂载成功。

配置自动挂载(可选)

如需重启后自动挂载,可在 /etc/fstab 文件末尾添加挂载配置。固定写设备名较直观,量产或长期使用时建议改用 UUID,避免设备名变化导致挂载失败。

# 先查询分区 UUID
blkid /dev/nvme0n1p1

# 编辑 /etc/fstab,在文件末尾添加以下内容(二选一,不要同时添加)
# 方式一:按设备名挂载
/dev/nvme0n1p1  /mnt/myssd  ext4  defaults  0  2

# 方式二:按 UUID 挂载(推荐,将 xxxxx 替换为实际 UUID)
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  /mnt/myssd  ext4  defaults,nofail  0  2

# 保存后验证
mount -a
df -h /mnt/myssd

性能测试(读写速度验证)

在已挂载的文件系统上使用 dd 测试读写速度,测试完成后删除临时文件。

dd if=/dev/zero of=/mnt/myssd/testfile bs=1G count=1 oflag=direct
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 3.31848 s, 324 MB/s
dd if=/mnt/myssd/testfile of=/dev/null bs=1G iflag=direct
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.50334 s, 429 MB/s
# 清理测试文件
rm -f /mnt/myssd/testfile
sync

卸载与拆装

测试完成或需要拆装 SSD/HAT 前,请先同步数据并卸载文件系统,再关机断电。

sync
umount /mnt/myssd